#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 2e5 + 10;
char s[maxn];
int nex[maxn];
int cnt[maxn];
int n;
void solve(){
	cin>>n;
	cin>>(s+1);
	
	// 先看看是不是 所有字母都是相同的
	// 这里面需要特殊进行判断
	bool flag=true;
	for (int i=1;i<=n;i++) {
		if (s[i]!=s[1]) {
			flag=false;
			break;
		}
	}
	if (flag) {
		cout << n*(n+1)/2<<'\n';
		return;
	}
	// 求出 nex 数组
	nex[0]=nex[1]=0;
	for (int i=2, j=0;i<=n;i++) {
		while(j&&s[i]!=s[j+1]){
			j=nex[j];
		}
		if (s[i]==s[j+1]) {
			j++;
		}
		nex[i]=j;
		cnt[j]++;
	}
	
	
	int ans=0;
	for (int i=1;i<=n;i++) {
		ans += (cnt[i]+1);
	}
	cout << ans <<'\n';
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
